Nginx和Frp做内网穿透,实现外网访问内网的几个环境

您所在的位置:网站首页 frp udp穿透 Nginx和Frp做内网穿透,实现外网访问内网的几个环境

Nginx和Frp做内网穿透,实现外网访问内网的几个环境

2023-03-07 14:49| 来源: 网络整理| 查看: 265

使用Nginx和Frp实现二级域名访问内网的不同环境

本教程的目标:

浏览器访问 dev.zxd.cn 能访问到内网部署在9081端口的程序 浏览器访问 uat.zxd.cn 能访问到内网部署在9082端口的程序 离开内网仍然能够 ssh到内网的机器 进行管理。

最终结果示意图如下: 在这里插入图片描述

1.软硬件准备 (1) 机器准备 注册一个域名且备案,本教程使用的是:zxd.cn这个域名 准备一台有公网IP的服务器,本教程使用的是腾讯云的低配服务器,一个月10块钱。 准备一台内网电脑/服务器,本片教程内网机器是Linux,后面要访问的程序就部署在这台机器上。 (2) 软件准备 Frp: 本教程内网穿透使用Frp,官方地址:github.com/fatedier/fr… Nginx: 虽然Frp本身就能实现二级域名穿透转发,还是在公网服务器上装一个Nginx来实现不同二级域名的转发吧,以方便后面进行拓展。 两个程序: 内网服务器部署两个程序,分别部署在9081端口和9082端口上。 2.域名配置

申请的域名进行备案后,对域名添加记录,这样就建好了两个二级域名:

dev.zxd.cn uat.zxd.cn

访问这两个地址,因为记录指向了公网服务器IP,不严谨的说,可以看作是访问公网服务器IP:80 在这里插入图片描述

3.公网服务器安装Frp服务端 (1) 下载Frp

查看自己公网服务器的内核架构,下载对应版本的压缩包,上传到公网服务器的 /data/frp/ 目录下,解压。 github.com/fatedier/fr… 在这里插入图片描述

(2) 启动Frp服务端 cd /data/frp # 创建开机启动文件 vim frps.service # 拷贝配置文件 cp frps.service /etc/systemd/system # 刷新服务列表、设置开机自启、启动Frp服务端 systemctl daemon-reload systemctl enable frps systemctl start frps 复制代码

frps.service文件内容如下:

[Unit] Description=frps After=network.target [Service] ExecStart=/data/frp/frp_0.35.0_linux_386/frps -c /data/frp/frp_0.35.0_linux_386/frps.ini [Install] WantedBy=multi-user.target 复制代码 (3) 配置Frp服务端

编辑 frps.ini 文件

配置bind_port为17000,用于Frp服务端与客户端的通信 配置vhost_http_port为18000,用于Http请求的转发 配置dashboard相关,用于Frp仪表盘的访问 [common] bind_port = 17000 vhost_http_port = 18000 dashboard_port = 17080 dashboard_user = root dashboard_pwd = 123654@#*! 复制代码

重启Frp服务端,使配置生效

systemctl restart frps 复制代码 4.内网机器安装Frp客户端 (1) 下载Frp

下载对应版本的压缩包,上传到内网机器的 /data/frp/ 目录下,解压。 在这里插入图片描述

(2) 启动Frp客户端 cd /data/frp # 创建开机启动文件 vim frpc.service # 拷贝配置文件 cp frpc.service /etc/systemd/system # 刷新服务列表、设置开机自启、启动Frp客户端 systemctl daemon-reload systemctl enable frpc systemctl start frpc 复制代码

frpc.service文件内容如下:

[Unit] Description=frpc After=network.target [Service] ExecStart=/data/frp/frp_0.35.0_linux_386/frpc -c /data/frp/frp_0.35.0_linux_386/frpc.ini [Install] WantedBy=multi-user.target 复制代码 (3) 配置Frp客户端

编辑 frpc.ini 文件

配置server_addr,指向Frp服务端的公网IP 配置server_port,指向Frp服务端配置的通信端口 配置ssh相关,以使服务器管理员可以通过公网服务器IP:17022访问内网机器的22端口进行管理内网服务器。 配置dev.zxd.cn相关 配置uat.zxd.cn相关 server_addr = 182.165.78.12 server_port = 17000 [ssh] type = tcp local_ip = 127.0.0.1 local_port = 22 remote_port = 17022 [dev] type = http local_port = 9081 custom_domains = dev.zxd.cn [uat] type = http local_port = 9082 custom_domains = uat.zxd.cn 复制代码

重启Frp客户端,使配置生效

systemctl restart frpc 复制代码 5.公网服务器安装nginx

主要是用于对不同的二级域名进行转发,虽然Frp本身就支持不同的二级域名转发,但是考虑到后续拓展的和其他环境转发等因素,还是在Frp前置一个Nginx,目前两个环境都是转发到Frp服务端的转发Http端口上。

经过配置后,访问两个不同的域名应该会是这个流程:

dev.zxd.cn -> 182.165.78.12:80 -> frp服务端Http转发端口 -> 内网机器的Frp客户端 -> 内网dev程序 uat.zxd.cn -> 182.165.78.12:80 -> frp服务端Http转发端口 -> 内网机器的Frp客户端 -> 内网uat程序 server { listen 80; server_name dev.zxd.cn; location / { proxy_pass http://182.165.78.12:18000; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header REMOTE-HOST $remote_addr; } } server { listen 80; server_name uat.zxd.cn; location / { proxy_pass http://182.165.78.12:18000; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header REMOTE-HOST $remote_addr; } } 复制代码 6.测试 (1) Http访问测试

浏览器访问两个二级域名,应该能访问到内网机器上部署的两个不同的程序。

(2) ssh测试

使用Xshell等工具,连接公网服务器IP:17022,就能ssh到内网机器了。 在这里插入图片描述



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3